谈谈 ErrorBoundaries
是什么
错误边界是 React 组件,它可以 在子组件树的任何位置捕获 js 错误,并记录这些错误,显示一个备用 UI ,而不是使整个组件树崩溃。
错误边界 无法 捕获如下错误
- 事件处理
- 异步代码 (例如 setTimeout 或 requestAnimationFrame 回调函数)
- 服务端渲染 ssr
- 错误边界自身抛出来的错误 (而不是其子组件)
为何不使用 try/catch?
try / catch 非常棒,但其仅能在命令式代码
下可用:
try {
showButton();
} catch (error) {
// ...
}
然而,React 组件是声明式
的并且具体指出 声明 什么需要被渲染:
<Button />